// 多选分支
; (function () {
    return
    // 具体形式如下：(p1 | p2 | p3)，
    // 其中 p1、p2 和 p3 是子模式，
    // 用 |（管道符）分隔，表示其中任何之一。
    var regex = /good|nice/g;
    var string = "good idea, nice try.";
    console.log(string.match(regex));
    // => ["good", "nice"]


    // 分支匹配也是惰性的,下面的例子可以举例
    var regex2 = /go|good/g;
    var string = "good idea, nice gotry.";
    console.log(string.match(regex2));
    // => [ 'go', 'go' ]
    // 可以看出当go匹配成功后, 就不在匹配后面的good了


    // 修改一下
    var regex3 = /good|go/g;
    var string = "good idea, nice gotry.";
    console.log(string.match(regex3));
    // =>[ 'good', 'go' ]


})();

// 多选分支实践1
; (function () {
    return
    // =================================
    // 因为分支惰性匹配的原理,此时需要把6个放在前面,
    // =================================
    var regex = /#([0-9a-fA-F]{6}|[0-9a-fA-F]{3})/g;
    var string = "#ffbbad #Fc01DF #FFF #ffE";
    console.log(string.match(regex));
    // => ["#ffbbad", "#Fc01DF", "#FFF", "#ffE"]


    var regex2 = /#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})/g;
    var string = "#ffbbad #Fc01DF #FFF #ffE";
    console.log(string.match(regex2));
    // 这个时候6个字母的色值就不会被匹配到了
    // => [ '#ffb', '#Fc0', '#FFF', '#ffE' ]
})();

// 多选分支实践2
; (function () {
    // //return
    // 这个错误的点是,19:59就不行了
    // var regex = /[0-2]{1}[0-3]{1}:[0-5]{1}[0-9]{1}/;
    // var date1 = '23:59';
    // var date2 = '02:07';
    // var date3 = '19:59';
    // console.log(regex.test(date2));
    // console.log(regex.test(date1));
    // console.log(regex.test(date3)); //false

    // 下面是正确的正则
    // var regex = /^([01][0-9]|[2][0-3]):[0-5][0-9]$/;
    // console.log(regex.test("23:59"));
    // console.log(regex.test("02:07"));
    // console.log(regex.test("19:59")); // true



    // =================================
    // 现在匹配7:9就是可以省略前面的0
    // var regex = /^(0?[0-9]|1[0-9]|[2][0-3]):(0?[0-9]|[1-5][0-9])$/;
    // console.log(regex.test("23:59"));
    // console.log(regex.test("02:07"));
    // console.log(regex.test("7:9"));

})();

// 多分支实践3
; (function () {
    return
    //   要求匹配如下格式的时间
    //   2017-06-10
    //   前面4个可以写成 [0-9]{4}
    //   中间两个 (0[1-9]|1[0-2])
    //   后面俩个 (0[1-9]|[12][0-9]|3[01])

    var regex = /^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$/;
    console.log(regex.test("2017-06-10"));
})();

// 多分支实践匹配id
; (function () {
    //return
    // .==>为任意字符 *表示可能有0或者多个,
    // var regex = /id=".*"/
    // var string = '<div id="container" class="main"></div>';
    // console.log(string.match(regex)[0]);
    // => id="container" class="main"

    // 加个?后就是匹配到第一个"就立马停止了,因为这个是最短的
    var regex = /id=".*?"/
    var string = '<div id="container" class="main"></div>';
    console.log(string.match(regex)[0]);
    // => id="container"

    // 当然，这样也会有个问题。效率比较低，因为其匹配原理会涉及到“回溯”这个概念
    // 优化版本
    // var regex = /id="[^"]*"/
    // var string = '<div id="container" class="main"></div>';
    // console.log(string.match(regex)[0]);
    // // => id="container"
})();